昨日我們初探自動裝配機制,要更深入探討自動裝配機制前,需要好好研究一下常用的Annotation才能更完整了解自動配置機制。
回憶一下過去我們怎麼使用xml來將bean設定到container呢,官方文件參照,沒錯@Configuration就等同於xml配置文件
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
https://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="emp" class="com.swj.bean.Employee">
<property name="id" value="123456">
<property name="name" value="james">
</bean>
</beans>
等同於
//@SpringBootConfiguration//配置類,與@Configuration相同
@Configuration
public class AppConfig {
@Scope("prototype") //預設是singelton,可以透過設置修該為非singleton
@Bean
//@Bean("empBean") //透過此設置可以修改BeanName
public Employee emp(){
Employee emp = new Employee();
emp.setId("1");
emp.setEmpName("james");
return emp;
}
}
查看一下ioc container
@Configuration、@SpringBootApplication其實只是區分為Spring的配置類或其他配置類
這幾個annotation其實是相同的,標註於類別上方,為的是區分不同業務分層
點進@SpringBootApplication我們就可以看到@ComponentScan的註解,也就是預設會從哪個package路徑掃描組件
由於Spring Boot預設的ComponentScan是在SpringApplication註解所在的package下,那麼如何讓Spring Boot可以將各starter加載到IOC容器中這就很重要了
<!-- https://mvnrepository.com/artifact/com.ibm.mq/com.ibm.mq.allclient -->
<dependency>
<groupId>com.ibm.mq</groupId>
<artifactId>com.ibm.mq.allclient</artifactId>
<version>9.3.3.1</version>
</dependency>
試著將MQChannelDefinition導到ioc中
//@SpringBootConfiguration//配置類,與@Configuration相同
@Configuration
public class AppConfig {
@Bean
public MQChannelDefinition ibmMQ(){
return new MQChannelDefinition();
}
}
載入成功
2. 透過@Import的方式
載入成功